package com.mnkjxy.beauty.view;

import android.content.Context;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.ZoomControls;

import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;
import com.mnkjxy.beauty.R;
import com.mnkjxy.beauty.view.manager.BasicView;

public class BaiduMapView extends BasicView implements OnClickListener {
	private MapView myMapView;
	private String TAG = "BaiduMapView";
	private LocationClient mylocationClient;
	private BaiduMap mybaiduMap;

	private boolean isFirstLocation = true;
	/**
	 * 地图中下部开始按钮
	 */
	private TextView start_button;

	public BaiduMapView(Context context) {
		super(context);
	}

	@Override
	protected void setLinstener() {
		start_button.setOnClickListener(this);

	}

	@Override
	protected void init() {
		initMapView();
		start_button = (TextView) showInMiddle.findViewById(R.id.map_layout_start_button);

	}

	private void initMapView() {
		// 初始化百度地图控件
		SDKInitializer.initialize(context.getApplicationContext());
		showInMiddle = (ViewGroup) View.inflate(context, R.layout.map_layout, null);
		myMapView = (MapView) showInMiddle.findViewById(R.id.mapView);
		// 隐藏左下角百度图标
		myMapView.getChildAt(1).setVisibility(View.GONE);

		for (int i = 0; i < myMapView.getChildCount(); i++) {
			View childView = myMapView.getChildAt(i);
			// 隐藏缩放放大按钮
			if (childView instanceof ZoomControls) {
				childView.setVisibility(View.GONE);
			}
		}
		mybaiduMap = myMapView.getMap();
		// 地图类型,卫星和现在
		// myMapView.getMap().setMapType(BaiduMap.MAP_TYPE_SATELLITE);
		// 设置显示路况信息,地图上可以看到道路
		// myMapView.getMap().setTrafficEnabled(true);
		// 显示楼块信息
		mybaiduMap.setBuildingsEnabled(true);
		// 开启定位图层
		mybaiduMap.setMyLocationEnabled(true);
		// 定位初始化
		mylocationClient = new LocationClient(context);
		// 注册位置监听
		mylocationClient.registerLocationListener(new MylocationListenner());
		// 设置定位的选项
		LocationClientOption option = new LocationClientOption();
		// 是否打开gps进行定位
		option.setOpenGps(true);
		// 设置坐标类型为百度经纬坐标
		option.setCoorType("bd0911");
		// 定位扫描的时间间隔,不能小于1000
		option.setScanSpan(1001);

		// 为client设置相关的参数
		mylocationClient.setLocOption(option);
		// 开始定位
		mylocationClient.start();

	}

	private class MylocationListenner implements BDLocationListener {

		@Override
		public void onReceiveLocation(BDLocation loc) {
			if (loc == null || myMapView == null) {
				return;
			}

			MyLocationData locationData = new MyLocationData.Builder().accuracy(loc.getRadius())// 精度
					.direction(100)// 设置方向信息,还没弄,可能要罗盘
					.latitude(loc.getLatitude())// 设置精度
					.longitude(loc.getLongitude())// 设置纬度
					.build();
			// 设置当前地图的位置
			mybaiduMap.setMyLocationData(locationData);

			Log.i(TAG, "定位监听,纬度" + loc.getLatitude() + "--经度" + loc.getLongitude());
			// 当前位置的地理坐标
			if (isFirstLocation) {
				// 如果第一次定位,将当前位置设置为地图的中心
				isFirstLocation = false;
				LatLng latLng = new LatLng(loc.getLatitude(), loc.getLongitude());
				// 设置当前位置为地图的中心点
				MapStatusUpdate locationUpdate = MapStatusUpdateFactory.newLatLng(latLng);
				mybaiduMap.setMapStatus(locationUpdate);
				// 设置地图缩放级别
				locationUpdate = MapStatusUpdateFactory.zoomTo(16);
				mybaiduMap.setMapStatus(locationUpdate);
			}
			
			
//			,纬度31.273371--经度120.744412

			// System.out.println(loc.getAddrStr());// 地址信息
			// System.out.println(loc.getCity());// 城市信息
			// System.out.println(loc.getDistrict());// 县区信息
			// System.out.println(loc.getProvince());// 省份
			// System.out.println(loc.getRadius());// 精度
			// System.out.println(loc.getSpeed());// 速度
			// System.out.println(loc.getStreet());// 街道

		}

	}

	@Override
	protected int getId() {
		return 0;
	}

	@Override
	public void onPause() {
		myMapView.onPause();
		Log.i(TAG, "地图pause");
	}

	@Override
	public void onResume() {
		myMapView.onResume();
		Log.i(TAG, "地图resume");
	}

	@Override
	public void onClick(View arg0) {

		switch (arg0.getId()) {
		case R.id.map_layout_start_button:// 点击地图中下部开始按钮

			break;

		default:
			break;
		}

	}

}
